﻿using System;
using System.Configuration;
using System.IO;
using WeChat.AspNet;

namespace TodayYongxing
{
    /// <summary>
    /// 微信调用入口页面。
    /// </summary>
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var httpMethod = Request.HttpMethod.ToUpper();

            var token = ConfigurationManager.AppSettings["Token"];

            // GET 用于开通微信平台接口时，做合法性验证，在公众平台管理界面里面把此页面作为接口的URL。
            if (httpMethod == "GET")
            {
                // 微信加密签名  
                string signature = Request.QueryString["signature"];
                // 时间戳  
                string timestamp = Request.QueryString["timestamp"];
                // 随机数  
                string nonce = Request.QueryString["nonce"];
                // 随机字符串  
                string echostr = Request.QueryString["echostr"];

                Logger.Log(string.Format("\r\nhttpMethod={0}:{1}", httpMethod, Request.QueryString));

                if (WeChatResponse.CheckSignature(token, signature, timestamp, nonce))
                {
                    // 当签名验证通过时，原样返回echostr给微信。
                    WeChatResponse.Write(echostr);
                }
            }
            else if (httpMethod == "POST")
            {
                // 当微信公共平台的接口已开通时，与微信客户端的响应在此；
                // 这里也可以继续对调用方进行合法性验证，以确保调用端是来自微信服务器；
                // 验证方法同GET；

                // 得到微信端发送的xml请求内容；
                var stream = new StreamReader(Request.InputStream);
                var xml = stream.ReadToEnd();

                Logger.Log(string.Format("\r\nhttpMethod={0}:{1}", httpMethod, xml));

                // 把微信请求的xml内容传入到WeChatRequest对象进行解析处理。
                var request = new WeChatRequest(xml);

                // WeChatRequest接收一个响应事件处理的对象，以便在接收到相关的事件时，触发处理事件。
                request.RaiseEvent(new ResposeObject());
            }

            
        }
    }
}